/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

export function runAllApiTest(classToTest: Object, filterKeys: string[]) {
  let lastKey = ''
  for (let key in classToTest) {
    if (typeof classToTest[key] === 'function') {
      if (filterKeys.includes(key)) {
        continue
      } else if (key === 'buildTest' || key === 'registerTest') {
        lastKey = key;
      } else {
        classToTest[key]();
      }
    }
  }
  if (lastKey !== '') {
    classToTest[lastKey]()
  }
}

export function isSameClass(objA: Object, objB: Object) {
  return (Object.getPrototypeOf(objA) === Object.getPrototypeOf(objB))
}

/**
 * 浅拷贝
 * */
export function shallowCopy(obj: object): object {
  let newObj: Record<string, Object> = {};
  for (let key of Object.keys(obj)) {
    newObj[key] = obj[key];
  }
  return newObj;
}